Python之路 - 递归
递归算法 🍀
递归算法是一种直接或者间接地调用自身算法的过程(递归函数就是一个体现)。在计算机编写程序中,递归算法对解决一大类问题是十分有效的,它往往使算法的描述简介而且易于理解。
特点:👈
- 递归就是再过程或函数里调用自身
- 再使用递归策略时,必须有一个明确的递归结束条件,称为递归出口。递归算法解题通常显得很简洁,但递归算法解题的运行效率低
- 在递归调用的过程当中系统为每一层的返回点、局部量等开辟了栈来存储。递归次数过多容易造成栈溢出等。所以一般不提倡用递归算法设计程序
要求:👈
- 每次调用在问题规模上都有所减少(通常是减半)
- 相邻两次重复之间有紧密的联系,前一次要为后一次做准备(通常前一次的输出就作为后一次的输入)
- 再问题的规模极小时必须要直接给出解答而不再进行递归调用,因而每次递归调用都是有条件的(以规模未达到直接解答的大小为条件),无条件递归条用将会称为死循环而不能正常结束
递归函数 🍀
面向函数编程中,利用递归思想来解决一些简单的问题是非常简单便洁的
递归函数就是函数内部通过调用自己本身来实现功能的函数。既然是调用自身,那么每次调用,需要解决的问题就应该有所减少,不然这个函数就没有尽头的执行下去。
打印10-0
1 | def counter(num): |
递归应用 🍀
用递归实现斐波那契数列
1 | l = [] |
用递归实现三级菜单
1 | menu = { |